package org.example.Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @Author : zhangbo
 * @data : 2024/6/19
 * @description :
 */
public class FixedThreadPool {
    /**
     * 描述：创建一个指定工作线程数量的线程池。每当提交一个任务就创建一个工作线程，如果工作线程数量达到线程池初始的最大数，则将提交的任务存入到池队列中。
     * 优点：提高程序效率和节省创建线程时所耗的开销
     * 缺点：线程池空闲时，即线程池中没有可运行任务时，它不会释放工作线程，还会占用一定的系统资源
     */
    public volatile int i;
    public static void main(String[] args) {
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
        for (int i = 0; i < 10; i++) {
            final int index = i;
            fixedThreadPool.execute(new Runnable() {
                public void run() {
                    try {
                        System.out.println(index);
                        Thread.sleep(8000);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
